
class Solution
{
    static int index=0;
    public static Node buildUtil(int in[],int pre[],int st,int end){
        if(st>end){
            return null;
        }
        Node n=new Node(pre[index++]);
        
        if(st==end){
            return n;
        }
        
        int x=search(in,st,end,n.data);
        n.left=buildUtil(in,pre,st,x-1);
        n.right=buildUtil(in,pre,x+1,end);
        
        return n;
    }
    public static int search(int in[],int st,int end,int key){
        for(int i=st;i<=end;i++){
            if(in[i]==key){
                return i;
            }
        }
        return -1;
    }
    public static Node buildTree(int inorder[], int preorder[], int n)
    {
        // code here
        index=0;
        return buildUtil(inorder,preorder,0,n-1);
    }
}
